package com.lds.register.center.server.business.cluster.service;

import com.lds.management.center.common.model.db.OrderBy;
import com.lds.management.center.common.model.db.PageResult;
import com.lds.management.center.common.model.dto.ResultDTO;
import com.lds.register.center.common.model.cluster.request.ClusterBaseBatchCreateRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseBatchDeleteRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseBatchUpdateRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseCreateRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseDeleteRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseGetByIdRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseGetByIdsRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseGetByKeyRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseListPageRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseListRequest;
import com.lds.register.center.common.model.cluster.request.ClusterBaseUpdateRequest;
import com.lds.register.center.common.model.cluster.response.ClusterBaseBatchCreateResponse;
import com.lds.register.center.common.model.cluster.response.ClusterBaseBatchDeleteResponse;
import com.lds.register.center.common.model.cluster.response.ClusterBaseBatchUpdateResponse;
import com.lds.register.center.common.model.cluster.response.ClusterBaseDeleteResponse;
import com.lds.register.center.common.model.cluster.response.ClusterBaseListResponse;
import com.lds.register.center.common.model.cluster.response.ClusterBaseResponse;
import com.lds.register.center.server.business.cluster.entity.Cluster;


/**
 * 基础服务类
 *
 * @author lidongsheng
 * @since 2025-06-26
 */
public interface ClusterBaseService {
    /**
     * 创建
     */
    ResultDTO<ClusterBaseResponse> createCluster(ClusterBaseCreateRequest request);

    /**
     * 批量创建
     */
    ResultDTO<ClusterBaseBatchCreateResponse> batchCreateCluster(ClusterBaseBatchCreateRequest request);

    /**
     * 删除
     */
    ResultDTO<ClusterBaseDeleteResponse> deleteCluster(ClusterBaseDeleteRequest request);

    /**
     * 批量删除
     */
    ResultDTO<ClusterBaseBatchDeleteResponse> batchDeleteCluster(ClusterBaseBatchDeleteRequest request);

    /**
     * 更新
     */
    ResultDTO<ClusterBaseResponse> updateCluster(ClusterBaseUpdateRequest request);

    /**
     * 批量更新
     */
    ResultDTO<ClusterBaseBatchUpdateResponse> batchUpdateCluster(ClusterBaseBatchUpdateRequest request);

    /**
     * 根据ID查询
     */
    ResultDTO<ClusterBaseResponse> getClusterById(ClusterBaseGetByIdRequest request);

    /**
     * 根据ID集合查询
     */
    ResultDTO<ClusterBaseListResponse> getClusterByIds(ClusterBaseGetByIdsRequest request);

    /**
     * 根据业务主键查询
     */
    Cluster getClusterByKey(ClusterBaseGetByKeyRequest request);

    /**
     * 查询
     */
    ResultDTO<ClusterBaseListResponse> listCluster(ClusterBaseListRequest request);

    /**
     * 查询所有
     */
    ResultDTO<ClusterBaseListResponse> listAllCluster(OrderBy orderBy);

    /**
     * 分页查询
     */
    ResultDTO<PageResult<ClusterBaseResponse>> listClusterPage(ClusterBaseListPageRequest request);


    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/

    /**
     * 异步批量创建
     */
    ResultDTO<ClusterBaseBatchCreateResponse> batchCreateClusterAsync(ClusterBaseBatchCreateRequest request);

    /**
     * 异步批量删除
     */
    ResultDTO<ClusterBaseBatchDeleteResponse> batchDeleteClusterAsync(ClusterBaseBatchDeleteRequest request);

    /**
     * 异步批量更新
     */
    ResultDTO<ClusterBaseBatchUpdateResponse> batchUpdateClusterAsync(ClusterBaseBatchUpdateRequest request);

    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}